第1.3篇:第一个Spring Boot应用
一、项目结构解析
1.1 标准项目布局
Spring Boot项目采用约定优于配置的思想,提供了清晰的目录结构:
src/
├── main/
│ ├── java/com/example/demo/
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 服务层
│ │ ├── repository/ # 数据访问层
│ │ ├── model/ # 数据模型
│ │ └── DemoApplication.java # 应用入口
│ └── resources/
│ ├── application.properties # 配置文件
│ ├── static/ # 静态资源
│ └── templates/ # 模板文件
└── test/ # 测试代码
1.2 核心文件说明
- DemoApplication.java:应用程序入口类,包含main方法
- application.properties:全局配置文件
- pom.xml:Maven依赖配置
二、核心注解详解
2.1 @SpringBootApplication
这是Spring Boot的核心注解,是以下三个注解的组合:
@SpringBootConfiguration
:标记类为配置类@EnableAutoConfiguration
:启用自动配置机制@ComponentScan
:扫描组件(默认扫描当前包及其子包)
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.2 常用注解速查表
注解 | 作用 | 应用场景 |
---|---|---|
@RestController | 标记REST控制器 | API接口开发 |
@Service | 标记服务层组件 | 业务逻辑实现 |
@Repository | 标记数据访问组件 | 数据库操作 |
@Autowired | 自动注入依赖 | 依赖管理 |
@Value | 注入配置属性 | 读取配置文件 |
@RequestMapping | 映射HTTP请求 | URL路由定义 |
三、运行与调试方式
3.1 多种运行方式
IDEA运行
- 右键点击DemoApplication类
- 选择"Run DemoApplication"
Maven命令运行
mvn spring-boot:run
打包后运行
mvn clean package
java -jar target/demo-0.0.1-SNAPSHOT.jar
3.2 调试技巧
断点调试
- 在代码行号旁点击设置断点
- 右键选择"Debug DemoApplication"
- 使用调试工具栏控制执行流程
日志调试
在application.properties中配置日志级别:
logging.level.root=INFO
logging.level.com.example.demo=DEBUG
四、打包与部署流程
4.1 Maven打包配置
在pom.xml中添加打包插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4.2 执行打包命令
# 跳过测试打包
mvn clean package -DskipTests
# 查看打包结果
ls target/*.jar
4.3 部署选项
部署方式 | 适用场景 | 操作难度 |
---|---|---|
本地运行 | 开发测试 | ★☆☆☆☆ |
服务器部署 | 生产环境 | ★★☆☆☆ |
Docker容器 | 微服务架构 | ★★★☆☆ |
云平台部署 | 弹性扩展 | ★★★★☆ |
五、实战:创建第一个REST API
5.1 创建控制器
@RestController
@RequestMapping("/api/hello")
public class HelloController {
@GetMapping
public String sayHello() {
return "Hello, Spring Boot!";
}
@GetMapping("/{name}")
public String sayHelloTo(@PathVariable String name) {
return "Hello, " + name + "!";
}
}
5.2 测试API
使用curl测试:
# 简单问候
curl http://localhost:8080/api/hello
# 带参数问候
curl http://localhost:8080/api/hello/World
六、常见问题与解决方案
6.1 端口冲突
问题:Port 8080 was already in use
解决:在application.properties中修改端口:
server.port=8081
6.2 依赖冲突
问题:启动时报NoClassDefFoundError
解决:使用mvn dependency:tree
分析依赖,排除冲突包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
</exclusions>
</dependency>
附录
参考资料
扩展学习
- Spring Boot配置文件详解
- 自定义Starter开发
- Spring Boot DevTools使用技巧